<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" />
<title>shUnit2 2.1.x README</title>
<style type="text/css">

/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date: 2007-04-11 11:48:16 +0100 (Wed, 11 Apr 2007) $
:Revision: $Revision: 2791 $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.

See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/

/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
  border: 0 }

table.borderless td, table.borderless th {
  /* Override padding for "table.docutils td" with "! important".
     The right padding separates the table cells. */
  padding: 0 0.5em 0 0 ! important }

.first {
  /* Override more specific margin styles with "! important". */
  margin-top: 0 ! important }

.last, .with-subtitle {
  margin-bottom: 0 ! important }

.hidden {
  display: none }

a.toc-backref {
  text-decoration: none ;
  color: black }

blockquote.epigraph {
  margin: 2em 5em ; }

dl.docutils dd {
  margin-bottom: 0.5em }

/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
  font-weight: bold }
*/

div.abstract {
  margin: 2em 5em }

div.abstract p.topic-title {
  font-weight: bold ;
  text-align: center }

div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
  margin: 2em ;
  border: medium outset ;
  padding: 1em }

div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
  font-weight: bold ;
  font-family: sans-serif }

div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
  color: red ;
  font-weight: bold ;
  font-family: sans-serif }

/* Uncomment (and remove this text!) to get reduced vertical space in
   compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
  margin-bottom: 0.5em }

div.compound .compound-last, div.compound .compound-middle {
  margin-top: 0.5em }
*/

div.dedication {
  margin: 2em 5em ;
  text-align: center ;
  font-style: italic }

div.dedication p.topic-title {
  font-weight: bold ;
  font-style: normal }

div.figure {
  margin-left: 2em ;
  margin-right: 2em }

div.footer, div.header {
  clear: both;
  font-size: smaller }

div.line-block {
  display: block ;
  margin-top: 1em ;
  margin-bottom: 1em }

div.line-block div.line-block {
  margin-top: 0 ;
  margin-bottom: 0 ;
  margin-left: 1.5em }

div.sidebar {
  margin-left: 1em ;
  border: medium outset ;
  padding: 1em ;
  background-color: #ffffee ;
  width: 40% ;
  float: right ;
  clear: right }

div.sidebar p.rubric {
  font-family: sans-serif ;
  font-size: medium }

div.system-messages {
  margin: 5em }

div.system-messages h1 {
  color: red }

div.system-message {
  border: medium outset ;
  padding: 1em }

div.system-message p.system-message-title {
  color: red ;
  font-weight: bold }

div.topic {
  margin: 2em }

h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
  margin-top: 0.4em }

h1.title {
  text-align: center }

h2.subtitle {
  text-align: center }

hr.docutils {
  width: 75% }

img.align-left {
  clear: left }

img.align-right {
  clear: right }

ol.simple, ul.simple {
  margin-bottom: 1em }

ol.arabic {
  list-style: decimal }

ol.loweralpha {
  list-style: lower-alpha }

ol.upperalpha {
  list-style: upper-alpha }

ol.lowerroman {
  list-style: lower-roman }

ol.upperroman {
  list-style: upper-roman }

p.attribution {
  text-align: right ;
  margin-left: 50% }

p.caption {
  font-style: italic }

p.credits {
  font-style: italic ;
  font-size: smaller }

p.label {
  white-space: nowrap }

p.rubric {
  font-weight: bold ;
  font-size: larger ;
  color: maroon ;
  text-align: center }

p.sidebar-title {
  font-family: sans-serif ;
  font-weight: bold ;
  font-size: larger }

p.sidebar-subtitle {
  font-family: sans-serif ;
  font-weight: bold }

p.topic-title {
  font-weight: bold }

pre.address {
  margin-bottom: 0 ;
  margin-top: 0 ;
  font-family: serif ;
  font-size: 100% }

pre.literal-block, pre.doctest-block {
  margin-left: 2em ;
  margin-right: 2em ;
  background-color: #eeeeee }

span.classifier {
  font-family: sans-serif ;
  font-style: oblique }

span.classifier-delimiter {
  font-family: sans-serif ;
  font-weight: bold }

span.interpreted {
  font-family: sans-serif }

span.option {
  white-space: nowrap }

span.pre {
  white-space: pre }

span.problematic {
  color: red }

span.section-subtitle {
  /* font-size relative to parent (h1..h6 element) */
  font-size: 80% }

table.citation {
  border-left: solid 1px gray;
  margin-left: 1px }

table.docinfo {
  margin: 2em 4em }

/*
table.docutils {
  margin-top: 0.5em ;
  margin-bottom: 0.5em }
*/

table.footnote {
  border-left: solid 1px black;
  margin-left: 1px ;
  font-size: 80% }
  }

table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
  padding-left: 0.5em ;
  padding-right: 0.5em ;
  vertical-align: top }

table.docutils th.field-name, table.docinfo th.docinfo-name {
  font-weight: bold ;
  text-align: left ;
  white-space: nowrap ;
  padding-left: 0 }

h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
  font-size: 100% }

/*
tt.docutils {
  background-color: #eeeeee }
*/

ul.auto-toc {
  list-style-type: none }

/* customizations by kward */

h1 { font-size: 133%; border-top:1px solid #CCCCFF; }
h1.title { font-size: 150%; border-top:0px; padding-top: 1em; }
/* div.document { font-size: 90% } */

</style>
</head>
<body>
<div class="document" id="shunit2-2-1-x-readme">
<h1 class="title">shUnit2 2.1.x README</h1>
<div class="section">
<h1><a id="sourceforge" name="sourceforge">SourceForge</a></h1>
<p>This project is stored on SourceForge as <a class="reference" href="http://sf.net/projects/shunit2">http://sf.net/projects/shunit2</a>. The
source code is stored in Subversion and can be accessed using the following
information.</p>
<p>Check out the code locally</p>
<pre class="literal-block">
$ svn co https://shunit2.svn.sourceforge.net/svnroot/shunit2/trunk/source/2.1 shunit2
</pre>
<p>Browse the code in a web browser:</p>
<ul class="simple">
<li><a class="reference" href="http://shunit2.svn.sourceforge.net/viewvc/shunit2/trunk/source/2.1/">http://shunit2.svn.sourceforge.net/viewvc/shunit2/trunk/source/2.1/</a></li>
<li><a class="reference" href="http://shunit2.svn.sourceforge.net/svnroot/shunit2/trunk/source/2.1/">http://shunit2.svn.sourceforge.net/svnroot/shunit2/trunk/source/2.1/</a></li>
</ul>
</div>
<div class="section">
<h1><a id="making-a-release" name="making-a-release">Making a release</a></h1>
<p>For these steps, it is assumed we are working with release 2.0.0.</p>
<p>Steps:</p>
<ul class="simple">
<li>write release notes</li>
<li>update version</li>
<li>finish changelog</li>
<li>check all the code in</li>
<li>tag the release</li>
<li>export the release</li>
<li>create tarball</li>
<li>md5sum the tarball and sign with gpg</li>
<li>update website</li>
<li>post to SourceForge and Freshmeat</li>
</ul>
<div class="section">
<h2><a id="write-release-notes" name="write-release-notes">Write Release Notes</a></h2>
<p>This should be pretty self explainatory. Use one of the release notes from a
previous release as an example.</p>
<p>To get the versions of the various shells, do the following:</p>
<table border="1" class="docutils">
<colgroup>
<col width="9%" />
<col width="12%" />
<col width="79%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Shell</th>
<th class="head">OS</th>
<th class="head">Notes</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>bash</td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">bash</span> <span class="pre">--version</span></tt></td>
</tr>
<tr><td>dash</td>
<td>Linux</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">dpkg</span> <span class="pre">-l</span> <span class="pre">|grep</span> <span class="pre">dash</span></tt></td>
</tr>
<tr><td rowspan="3">ksh</td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">ksh</span> <span class="pre">--version</span></tt>
-or-
<tt class="docutils literal"><span class="pre">$</span> <span class="pre">echo</span> <span class="pre">'echo</span> <span class="pre">$KSH_VERSION'</span> <span class="pre">|ksh</span></tt></td>
</tr>
<tr><td>Cygwin</td>
<td>see pdksh</td>
</tr>
<tr><td>Solaris</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">strings</span> <span class="pre">/usr/bin/ksh</span> <span class="pre">|grep</span> <span class="pre">'Version'</span></tt></td>
</tr>
<tr><td rowspan="2">pdksh</td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">strings</span> <span class="pre">/bin/pdksh</span> <span class="pre">|grep</span> <span class="pre">'PD</span> <span class="pre">KSH'</span></tt></td>
</tr>
<tr><td>Cygwin</td>
<td>look in the downloaded Cygwin directory</td>
</tr>
<tr><td>sh</td>
<td>Solaris</td>
<td>not possible</td>
</tr>
<tr><td>zsh</td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">zsh</span> <span class="pre">--version</span></tt></td>
</tr>
</tbody>
</table>
</div>
<div class="section">
<h2><a id="update-version" name="update-version">Update Version</a></h2>
<p>Edit <tt class="docutils literal"><span class="pre">src/shell/shunit2</span></tt> and change the version number in the comment, as well
as in the <tt class="docutils literal"><span class="pre">__SHUNIT_VERSION</span></tt> variable. Next, edit the
<tt class="docutils literal"><span class="pre">src/docbook/shunit2.xml</span></tt> file, edit the version in the <tt class="docutils literal"><span class="pre">&lt;title&gt;</span></tt> element,
and make sure there is a revision section for this release.</p>
</div>
<div class="section">
<h2><a id="finish-documentation" name="finish-documentation">Finish Documentation</a></h2>
<p>Make sure that any remaning changes get put into the <tt class="docutils literal"><span class="pre">CHANGES-X.X.txt</span></tt> file.</p>
<p>Finish writing the <tt class="docutils literal"><span class="pre">RELEASE_NOTES-X.X.X.txt</span></tt>. Once it is finished, run it
through the <strong>fmt</strong> command to make it pretty.</p>
<pre class="literal-block">
$ fmt -w 80 RELEASE_NOTES-2.0.0.txt &gt;RELEASE_NOTES-2.0.0.txt.new
$ mv RELEASE_NOTES-2.0.0.txt.new RELEASE_NOTES-2.0.0.txt
</pre>
<p>We want to have an up-to-date version of the documentation in the release, so
we'd better build it.</p>
<pre class="literal-block">
$ pwd
.../shunit2/source/2.0
$ make docs
...
$ cp -p build/shunit2.html doc
$ rst2html --stylesheet-path=share/css/rst2html.css doc/README.txt &gt;doc/README.html
</pre>
</div>
<div class="section">
<h2><a id="check-in-all-the-code" name="check-in-all-the-code">Check In All the Code</a></h2>
<p>This step is pretty self-explainatory</p>
<pre class="literal-block">
$ pwd
.../shunit2/source/2.0
$ svn ci -m &quot;finalizing release&quot;
</pre>
</div>
<div class="section">
<h2><a id="tag-the-release" name="tag-the-release">Tag the Release</a></h2>
<pre class="literal-block">
$ pwd
.../shunit2/source
$ ls
2.0  2.1
$ svn cp -m &quot;Release 2.0.0&quot; 2.0 https://shunit2.svn.sourceforge.net/svnroot/shunit2/tags/source/2.0.0
</pre>
</div>
<div class="section">
<h2><a id="export-the-release" name="export-the-release">Export the Release</a></h2>
<pre class="literal-block">
$ pwd
.../shunit2/builds
$ svn export https://shunit2.svn.sourceforge.net/svnroot/shunit2/tags/source/2.0.0 shunit2-2.0.0
</pre>
</div>
<div class="section">
<h2><a id="create-tarball" name="create-tarball">Create Tarball</a></h2>
<pre class="literal-block">
$ tar cfz ../releases/shunit2-2.0.0.tgz shunit2-2.0.0
</pre>
</div>
<div class="section">
<h2><a id="md5sum-the-tarball-and-sign-with-gpg" name="md5sum-the-tarball-and-sign-with-gpg">md5sum the Tarball and Sign With gpg</a></h2>
<pre class="literal-block">
$ cd ../releases
$ md5sum shunit2-2.0.0.tgz &gt;shunit2-2.0.0.tgz.md5
$ gpg --default-key kate.ward&#64;forestent.com --detach-sign shunit2-2.0.0.tgz
</pre>
</div>
<div class="section">
<h2><a id="update-website" name="update-website">Update Website</a></h2>
<p>Again, pretty self-explainatory. Make sure to copy the MD5 and GPG signature
files. Once that is done, make sure to tag the website so we can go back in
time if needed.</p>
<pre class="literal-block">
$ pwd
.../shunit2
$ ls
source  website
$ svn cp -m &quot;Release 2.0.0&quot; \
website https://shunit2.svn.sourceforge.net/svnroot/shunit2/tags/website/20060916
</pre>
<p>Now, update the website. It too is held in Subversion, so <strong>ssh</strong> into
SourceForge and use <tt class="docutils literal"><span class="pre">svn</span> <span class="pre">up</span></tt> to grab the latest version.</p>
</div>
<div class="section">
<h2><a id="post-to-sourceforge-and-freshmeat" name="post-to-sourceforge-and-freshmeat">Post to SourceForge and Freshmeat</a></h2>
<ul class="simple">
<li><a class="reference" href="http://sourceforge.net/projects/shunit2/">http://sourceforge.net/projects/shunit2/</a></li>
<li><a class="reference" href="http://freshmeat.net/">http://freshmeat.net/</a></li>
</ul>
</div>
</div>
<div class="section">
<h1><a id="related-documentation" name="related-documentation">Related Documentation</a></h1>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field"><th class="field-name">Docbook:</th><td class="field-body"><p class="first"><a class="reference" href="http://www.docbook.org/">http://www.docbook.org/</a></p>
</td>
</tr>
<tr class="field"><th class="field-name">Docbook XML:</th><td class="field-body"><table class="first docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field"><th class="field-name" colspan="2">docbook-xml-4.4.zip:</th></tr>
<tr><td>&nbsp;</td><td class="field-body"><a class="reference" href="http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip">http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip</a>
<a class="reference" href="http://www.oasis-open.org/docbook/xml/4.4/docbook-xml-4.4.zip">http://www.oasis-open.org/docbook/xml/4.4/docbook-xml-4.4.zip</a></td>
</tr>
<tr class="field"><th class="field-name" colspan="2">docbook-xml-4.5.zip:</th></tr>
<tr><td>&nbsp;</td><td class="field-body"><a class="reference" href="http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip">http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr class="field"><th class="field-name">Docbook XSL:</th><td class="field-body"><table class="first docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field"><th class="field-name" colspan="2">docbook-xsl-1.71.0.tar.bz2:</th></tr>
<tr><td>&nbsp;</td><td class="field-body"><a class="reference" href="http://prdownloads.sourceforge.net/docbook/docbook-xsl-1.71.0.tar.bz2?download">http://prdownloads.sourceforge.net/docbook/docbook-xsl-1.71.0.tar.bz2?download</a></td>
</tr>
<tr class="field"><th class="field-name" colspan="2">docbook-xsl-1.71.1.tar.bz2:</th></tr>
<tr><td>&nbsp;</td><td class="field-body"><a class="reference" href="http://downloads.sourceforge.net/docbook/docbook-xsl-1.71.1.tar.bz2?use_mirror=puzzle">http://downloads.sourceforge.net/docbook/docbook-xsl-1.71.1.tar.bz2?use_mirror=puzzle</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr class="field"><th class="field-name">JUnit:</th><td class="field-body"><p class="first last"><a class="reference" href="http://www.junit.org/">http://www.junit.org/</a></p>
</td>
</tr>
</tbody>
</table>
<!--  -->
<!-- generate HTML using rst2html from Docutils of -->
<!-- http://docutils.sourceforge.net/ -->
<!--  -->
<!-- vim:syntax=rst:textwidth=80 -->
<!-- $Revision: 132 $ -->
</div>
</div>
</body>
</html>
